/*
 *  vector.h
 *  Untitled
 *
 *  Created by Ben Nolan on 2/11/08.
 *  Copyright 2008 __MyCompanyName__. All rights reserved.
 *
 */
#pragma once

#include <string>

namespace Wonderland{
	/*
	 * A 3-vector of x,y,z
	 */
	class Vector{
	public:
		Vector(double _x, double _y, double _z) : x(_x), y(_y), z(_z){
		}
		
		Vector(std::string);
		
		Vector(){
			x = y = z = 0;
		}
		
		std::string toString() const;

		inline bool operator== (const Vector v) const{
			return (v.x == x) && (v.y == y) && (v.z == z);
		}
		
		/*
		 * @brief True if comparison vector is <x, <y and <z
		 */
		inline bool operator< (const Vector v) const{
			return (x < v.x) && (y < v.y) && (z < v.z);
		}

		/*
		 * @brief True if comparison vector is >x, >y and >z
		 */
		inline bool operator> (const Vector v) const{
			return (v.x < x) && (v.y < y) && (v.z < z);
		}

		double x, y, z;
	};
	
	std::ostream& operator << (std::ostream &os,const Vector v);
	
}

